﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.Linq;
using System.Linq;
using System.Data.Linq.Mapping;

namespace ProyectoEscuela
{
    public partial class frmSeguimientoCualitativo : ProyectoEscuela.frmABM
    {
        public dbProyectoEscuelaDataContext dbPE = Global.getInstance().db;
        public Alumno malumno = new Alumno();

        public frmSeguimientoCualitativo()
        {
            InitializeComponent();
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            frmBuscarPersona frmBus = new frmBuscarPersona("alumno");
            
            try
            {

                if (this.txbNumeroDoc.Text.Trim().Length == 0)
                {

                    frmBus.ShowDialog();
                    malumno = frmBus.getAlumno();

                    //uSR01.setAgente(mAgente);
                    txbNumeroDoc.Text = malumno.Numdoc;
                    lblApyNom.Text = malumno.Apellido + " " + malumno.Nombre;


                }
                else
                {
                    malumno =malumno.getAlumno(this.cbxTipoDoc.Text, this.txbNumeroDoc.Text);

                    //uSR01.setAgente(mAgente);
                    lblApyNom.Text = malumno.Apellido + " " + malumno.Nombre;

                }


            }
            catch (Exception ex)
            {

                System.Windows.Forms.MessageBox.Show(ex.Message);
            }


           var cursos = from alucur in dbPE.AlumnoCursos where alucur.IdAlumno == malumno.idPersona select alucur;
           
            foreach (AlumnoCurso c in cursos)
           {
               cursoBindingSource.Add(c.Curso);
               foreach (CursoMateria cm in c.Curso.CursoMaterias)
               { materiaBindingSource.Add(cm.Materia); }

           }
            cbxGrado.DisplayMember = "Nombre_Curso";
            cbxGrado.ValueMember = "IdCurso";
            cbxMateria.DisplayMember = "Nombre";
            cbxMateria.ValueMember = "IdMateria";
            cbxMateria.DataSource = materiaBindingSource;
            cbxGrado.DataSource = cursoBindingSource;

           var maspectos = from asp in dbPE.SeguimientoCualitativos
                           where asp.IdAlumno == malumno.idPersona
                           //&& asp.IdAspecto_Materia == int.Parse(cbxMateria.SelectedText) && asp.IdCurso == int.Parse(cbxGrado.SelectedText) 
                           select new
                          {
                              Nombre = asp.AlumnoCurso.Persona.Nombre,
                              Apellido = asp.AlumnoCurso.Persona.Apellido,
                              Aspecto = asp.AspectosMateria.NombreAspecto,
                              Valor = asp.Valor,
                              Periodo = asp.Periodo_Califica,
                          };
           dgvAspectos.DataSource = maspectos;


            //var maspectos= from asp in dbPE.SeguimientoCualitativos where asp.IdAlumno==malumno.idPersona select asp;
            //dgvAspectos.DataSource = 

     
            
        }

        private void frmSeguimientoCualitativo_Load(object sender, EventArgs e)
        {
            
            cbxGrado.DataSource = dbPE.Cursos;
            cbxMateria.DataSource = dbPE.Materias;
            cbxGrado.DisplayMember = "Nombre_Curso";
            cbxGrado.ValueMember = "IdCurso";
            cbxMateria.DisplayMember = "Nombre";
            cbxMateria.ValueMember = "IdMateria";
        }

        private void dgvAspectos_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void cbxMateria_SelectedIndexChanged(object sender, EventArgs e)
        {
           

        }

        private void cbxGrado_SelectedIndexChanged(object sender, EventArgs e)
        {
            //
            
        }

        private void cbxGrado_SelectionChangeCommitted(object sender, EventArgs e)
        {
            Curso curso = dbPE.Cursos.Single(cur => cur.IdCurso == int.Parse(cbxGrado.SelectedValue.ToString()));
            foreach (CursoMateria cm in curso.CursoMaterias)
            {
                materiaBindingSource.Add(cm.Materia);
            }
        }

        private void cbxMateria_SelectionChangeCommitted(object sender, EventArgs e)
        {
            int nro = int.Parse(cbxMateria.SelectedValue.ToString());
            int cso = int.Parse(cbxGrado.SelectedValue.ToString());
            
            var maspectos = from asp in dbPE.SeguimientoCualitativos join c in dbPE.AspectosMaterias on
                                asp.IdAspecto_Materia equals c.IdAspecto_Materia
                            where asp.IdAlumno == malumno.idPersona
                             && asp.IdCurso == cso &&
                             c.IdMateria==nro
                            select new
                            {
                                //Nombre = asp.AlumnoCurso.Persona.Nombre,
                               // Apellido = asp.AlumnoCurso.Persona.Apellido,
                                Aspecto = asp.AspectosMateria.NombreAspecto,
                                Valor = asp.Valor,
                                Periodo = asp.Periodo_Califica,
                            };
            
            //List<SeguimientoCualitativo> list=new List<SeguimientoCualitativo>();
            //List<SeguimientoCualitativo> list2 = new List<SeguimientoCualitativo>();
            //int nro=int.Parse(cbxMateria.SelectedValue.ToString());
            //list = maspectos.ToList;
            //foreach (SeguimientoCualitativo seg in list)
            //{
            //    if (seg.AspectosMateria.Materia.IdMateria == nro) { list2.Add(seg); }
            //}
            ////asp.AspectosMateria.ma == int.Parse(cbxMateria.SelectedValue.ToString())
            dgvAspectos.DataSource=maspectos;
        }

        private void btnSalir_Click(object sender, EventArgs e)
        {
            this.Dispose();
            this.Close();
        }

        private void cursoBindingSource_CurrentChanged(object sender, EventArgs e)
        {

        }

        private void materiaBindingSource_CurrentChanged(object sender, EventArgs e)
        {

        }
    }
}
